package cn.tuning.dao;

import cn.tuning.entity.CustomerInfo;
import cn.tuning.entity.RiderInfo;
import cn.tuning.entity.UserInfo;
import org.apache.ibatis.annotations.Param;


import java.util.List;

/**
 * @author laisd
 * @date 2021-08-04 22:34
 * @description:
 */
public interface UserDao {
    /**
     * 查询user_info表
     * @param userInfo
     * @return
     */
    List<UserInfo> getUserInfo(UserInfo userInfo);

    /**
     * 查询customer_info表
     * @param customerInfo
     * @return
     */
    List<CustomerInfo> getCustomerInfo(CustomerInfo customerInfo);

    /**
     * 查询rider_info表
     * @param riderInfo 骑手表
     * @return
     */
    List<RiderInfo> getRiderInfo(RiderInfo riderInfo);

    /**
     * 注册插入user_info表
     * @param userInfo 总表
     */
    void insertUserInfo(UserInfo userInfo);

    /**
     * 注册用户插入customer_info表
     * @param customerInfo 客户表
     */
    void insertCustomerInfo(CustomerInfo customerInfo);
    /**
     *
     */
    void updateCustomerBalance(@Param("id") String id,
                               @Param("balance") int balance);

    /**
     * 注册骑手插入rider_info表
     * @param riderInfo 骑手表
     */
    void insertRiderInfo(RiderInfo riderInfo);

    /**
     * 更新user_info表
     * @param userInfo 客户表
     */
    void updateUserInfo(UserInfo userInfo);

    /**
     * 更新rider_info表
     * @param riderInfo 骑手表
     */
    void updateRiderInfo(RiderInfo riderInfo);

    /**
     * 更新customer_info表
     * @param customerInfo 客户表
     */
    void updateCustomerInfo(CustomerInfo customerInfo);

    /**
     * 通过邮箱获取用户表
     * @param username
     */
    UserInfo getUserByUsername(String username);

    /**
     * 通过骑手id获取骑手表
     * @param riderId 骑手id
     * @return
     */
    RiderInfo getRiderInfoById(String riderId);


    /**
     * 通过骑手id号更新余额
     * @param username 邮箱号码
     * @param balance 余额
     */
    void updateUserByBalance(@Param("username") String username,
                             @Param("balance") int balance);

    /**
     * 通过用户id号更新余额
     * @param username 邮箱号码
     * @param balance 余额
     */
    void updateUserByBalanceCustomer(@Param("username") String username,
                                     @Param("balance") int balance);

    /**
     * 更新用户状态(是骑手还是发布者)
     * @param uid ID号
     * @param lastRoleStatus 上次登录状态
     */
    void updateUserByLastRoleStatus(@Param("uid") String uid,
                                     @Param("lastRoleStatus") int lastRoleStatus);

    /**
     * 骑手接单数+1
     * @param riderId 骑手id
     */
    void updateRiderByCurrentReceive(@Param("riderId") String riderId);




}
